package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@CrossOrigin    //解决跨域问题
@RestController
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping("/findUser")
    public List<User> findAll(){
        return userService.findAll();
    }
    /**
     * 业务：根据ID查询用户数据
     * 请求类型：get
     * url:http://localhost:8090/findUserById?id=1
     * 参数：id=1
     * 返回值：User对象
     * SpringMVC业务规范：
     *      1.接受参数时，必须与用户参数保持一致
     */

    //@RequestMapping(value = "findUserById",method = RequestMethod.GET)
    @CrossOrigin
    @GetMapping("/findUserById")     // 只能接受Get请求类型
    public User findUserById(Integer id){
        return userService.findUserById(id);
    }
    /**
     * 作业:
     *  5. 更新操作 利用restFul的结构, 根据Id修改数据,修改name/age
     *     URL:http://localhost:8090/user/貂蝉/18/227  PUT
     *     查询: http://localhost:8090/user/18         GET
     *     解析: URL:http://localhost:8090/user/{name}/{age}/{id}
     *
     *  RestFul语法:
     *      1.用户url编辑
     *          1.1 参数与参数之间使用/分割.
     *          1.2 restFul结构顺序一旦确定,不能随意更改
     *          1.3 如果使用restFul结构,请求路径中不能出现动词.隐藏目的.
     *
     *      2.用户规范:
     *          由于restFul结构请求路径都是名词,所以不能区分业务逻辑.
     *          所以采用请求类型,严格区分业务需求.
     *          2.1  GET   查询操作
     *          2.2  POST  新增操作/form表单提交
     *          2.3  PUT   修改操作
     *          2.4  DELETE 删除操作
     *
     *      3.参数接收
     *          1.参数与参数之间使用/分割.
     *          2.参数必须使用{xxx}包裹
     *          3.使用特定的注解@PathVariable("name") String name 接收参数
     *          4.如果接收参数的名称与对象中的属性名称一致,则可以使用对象接收
     *
     */

    // 国庆作业 --首
    @GetMapping("findUserNA")
    public User findUserNA(String name,Integer age){
        return userService.findUserNA(name,age);
    }
    @GetMapping("findUserLike")
    public List<User> findUserLike(String name){
        return userService.findUserLike(name);
    }
    @GetMapping("findUserByIds")
    public List<User> findUserByIds(String id){
        // 底层帮你强转
        List<Integer> lists = new ArrayList<Integer>();
        String[] str=id.split(",");
        for(String s:str){
            lists.add(Integer.parseInt(s));
        }
        // 底层帮你强转
        return userService.findUserByIds(lists);
    }
    @GetMapping("findUserWhere")
    public List<User> findUserWhere(Integer id,String name,Integer age,String sex){
        return userService.findUserWhere(id,name,age,sex);
    }
    @GetMapping("/updateUser/{name}/{age}/{id}")
    public String updateUser2(User user){
        userService.updateUser(user);
        return "更新成功";
    }
    @GetMapping("findUserByIds2")
    public List<User> findUserByIds2(@RequestParam("id") Integer[] ids){
        return userService.findUserByIds2(ids);
    }
    //国庆作业 --尾

    @GetMapping("/axios/getUserById")
    public User getUserById(Integer id){
        return userService.getUserById(id);
    }
    @GetMapping("/axios/findUserByNS")
    public List<User> findUserByNS(User user){
        return userService.findUserByNS(user);
    }
    @GetMapping("/axios/user/{name}/{sex}")
    public List<User> findOneUser(User user){
        return userService.findOneUser(user);
    }
    @PostMapping("/axios/saveUser")
    public String saveUser(@RequestBody User user){
        userService.saveUser(user);
        return "新增成功";
    }
    @GetMapping("/axios/findUser")
    public List<User> findUser(){
        return userService.findAll();
    }
    @PostMapping("/axios/deleteUser")
    public String deleteUser(@RequestBody User user){
        userService.deleteUser(user);
        return "删除成功";
    }
    @PostMapping("/axios/updateUser")
    public String updateUser(@RequestBody User user){
        userService.updateUser(user);
        return "更新成功";
    }
    @PutMapping("/axios/updateUser")
    public String putUpdateUser(@RequestBody User user){
        userService.updateUser(user);
        return "更新成功";
    }
    @PostMapping("/axios/findSome")
    public List<User> findSome(@RequestBody User user){
        return userService.findSome(user);
    }

}
